/*
Copyright (c) [2019年5月1日] [吴超]
[MBT_studio] is licensed under Mulan PSL v2.
You can use this software according to the terms and conditions of the Mulan PSL v2.
You may obtain a copy of Mulan PSL v2 at:
		 http://license.coscl.org.cn/MulanPSL2
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
See the Mulan PSL v2 for more details.
*/
#pragma once

#include "../../S_Physics.h"



S_Physics*	f_创建FLIP物理引擎(vec3 域大小);
void		f_销毁FLIP物理引擎(S_Physics* phy);

uint32			f_FLIP_get解算器域分辨率(S_Physics* phy, uint8 层级);
void			f_FLIP_set解算器域分辨率(S_Physics* phy, uint8 层级);




S_物理几何体* f_FLIP平面几何体(const vec4& v);
S_物理几何体* f_FLIP长方体几何体(const vec3& v);
S_物理几何体* f_FLIP球体几何体(const float32 半径);
S_物理几何体* f_FLIP凸壳几何体(const S_三角Mesh mesh);
S_物理几何体* f_FLIP网格几何体(const S_三角Mesh mesh);


S_物理体* f_FLIP刚体(S_物理几何体& geom, S_物理材质& mat);
S_物理体* f_FLIP静态(S_物理几何体& geom, S_物理材质& mat);
S_物理体* f_FLIP控制(S_物理几何体& geom, S_物理材质& mat);

S_物理体* f_FLIP创建车(S_Physics* 解算器, S_车体参数& 车体参数);
S_物理体* f_FLIP创建流体(S_Physics* 解算器, S_物理几何体& geom, S_物理材质& mat, const S_Tranform& t);

车辆容器_t f_getFLIP车辆(S_Physics* 解算器);

bool		f_FLIP_切换物理体类型(S_物理体* body, E_物理体类型 类型);


void		f_FLIP发射流体(S_Physics* 解算器, std::vector<S_物理体*>& bodys);
S_域区*		f_FLIP_get域属性(S_Physics* 解算器);



S_体素*		f_FLIP_get物体体素(S_物理体* body);

void		f_FLIP_模拟(S_Physics* 解算器);



void	f_FLIP流体数据写入到顶点缓存(S_Physics* 解算器, S_FLIP可视数据* data);





